HAL SD constants migration ¶
This section provides information about HAL SD constants for STM32 HAL1 to HAL2 migration.
Many constants previously defined in
hal_sd.h
have been removed from the HAL public APIs.
Their definitions are now maintained internally within the HAL and core drivers, reflecting a design change where such macros are used internally by the HAL implementation rather than being exposed for direct use in application code.
HAL SD block size identifier ¶
|
HAL1 |
HAL2 |
|---|---|
#define BLOCKSIZE
|
Removed in HAL2; used internally in HAL1 and do not affect user level operation. |
HAL SD card speed type ¶
|
HAL1 |
HAL2 |
|---|---|
#define CARD_HIGH_SPEED
#define CARD_NORMAL_SPEED
#define CARD_ULTRA_HIGH_SPEED
|
Removed in HAL2, used internally in HAL1 and do not affect user level operation. |
HAL SD card type identifiers ¶
|
HAL1 |
HAL2 |
|---|---|
#define CARD_SDHC_SDXC
#define CARD_SDSC
#define CARD_SECURED
|
Removed in HAL2, used internally in HAL1 and do not affect user level operation. |
HAL SD card version identifiers ¶
Note
In HAL1, the driver classifies cards’ specification versions into two groups using
CARD_V1_X(1.x and earlier) againstCARD_V2_X(2.x and later).In HAL2, version reporting is optional (enable
USE_HAL_SD_GET_SPEC_VERSION). When enabled, the exact specification is exposed viahal_sd_specification_version_t(1.xx–6.xx), giving finer resolution.
|
HAL1 |
HAL2 |
|---|---|
#define CARD_V1_X
#define CARD_V2_X
|
typedef enum
{
HAL_SD_SPECIFICATION_VERSION_1_00_OR_1_01,
HAL_SD_SPECIFICATION_VERSION_1_10,
HAL_SD_SPECIFICATION_VERSION_2_00,
HAL_SD_SPECIFICATION_VERSION_3_0X,
HAL_SD_SPECIFICATION_VERSION_4_XX,
HAL_SD_SPECIFICATION_VERSION_5_XX,
HAL_SD_SPECIFICATION_VERSION_6_XX,
HAL_SD_SPECIFICATION_VESION_UNSUPPORTED
} hal_sd_specification_version_t;
|
HAL SD card state identifiers ¶
|
HAL1 |
HAL2 |
|---|---|
#define HAL_SD_CARD_READY
#define HAL_SD_CARD_IDENTIFICATION
#define HAL_SD_CARD_STANDBY
#define HAL_SD_CARD_TRANSFER
#define HAL_SD_CARD_SENDING
#define HAL_SD_CARD_RECEIVING
#define HAL_SD_CARD_PROGRAMMING
#define HAL_SD_CARD_DISCONNECTED
#define HAL_SD_CARD_ERROR
|
typedef enum
{
HAL_SD_CARD_READY,
HAL_SD_CARD_IDENTIFICATION,
HAL_SD_CARD_STANDBY,
HAL_SD_CARD_TRANSFER,
HAL_SD_CARD_SENDING,
HAL_SD_CARD_RECEIVING,
HAL_SD_CARD_PROGRAMMING,
HAL_SD_CARD_DISCONNECTED,
HAL_SD_CARD_ERROR
} hal_sd_card_state_t;
|
HAL SD error codes ¶
|
HAL1 |
HAL2 |
|---|---|
#define HAL_SD_ERROR_NONE
#define HAL_SD_ERROR_CMD_CRC_FAIL
#define HAL_SD_ERROR_DATA_CRC_FAIL
#define HAL_SD_ERROR_CMD_RSP_TIMEOUT
#define HAL_SD_ERROR_DATA_TIMEOUT
#define HAL_SD_ERROR_TX_UNDERRUN
#define HAL_SD_ERROR_RX_OVERRUN
#define HAL_SD_ERROR_ADDR_MISALIGNED
#define HAL_SD_ERROR_BLOCK_LEN_ERR
#define HAL_SD_ERROR_ERASE_SEQ_ERR
#define HAL_SD_ERROR_BAD_ERASE_PARAM
#define HAL_SD_ERROR_WRITE_PROT_VIOLATION
#define HAL_SD_ERROR_LOCK_UNLOCK_FAILED
#define HAL_SD_ERROR_COM_CRC_FAILED
#define HAL_SD_ERROR_ILLEGAL_CMD
#define HAL_SD_ERROR_CARD_ECC_FAILED
#define HAL_SD_ERROR_CC_ERR
#define HAL_SD_ERROR_GENERAL_UNKNOWN_ERR
#define HAL_SD_ERROR_STREAM_READ_UNDERRUN
#define HAL_SD_ERROR_STREAM_WRITE_OVERRUN
#define HAL_SD_ERROR_CID_CSD_OVERWRITE
#define HAL_SD_ERROR_WP_ERASE_SKIP
#define HAL_SD_ERROR_CARD_ECC_DISABLED
#define HAL_SD_ERROR_ERASE_RESET
#define HAL_SD_ERROR_AKE_SEQ_ERR
#define HAL_SD_ERROR_INVALID_VOLTRANGE
#define HAL_SD_ERROR_ADDR_OUT_OF_RANGE
#define HAL_SD_ERROR_REQUEST_NOT_APPLICABLE
#define HAL_SD_ERROR_PARAM
#define HAL_SD_ERROR_UNSUPPORTED_FEATURE
#define HAL_SD_ERROR_BUSY
#define HAL_SD_ERROR_DMA
#define HAL_SD_ERROR_TIMEOUT
#define HAL_SD_ERROR_INVALID_CALLBACK
|
#define HAL_SD_ERROR_NONE
#define HAL_SD_ERROR_CMD_CRC_FAIL
#define HAL_SD_ERROR_DATA_CRC_FAIL
#define HAL_SD_ERROR_CMD_RSP_TIMEOUT
#define HAL_SD_ERROR_DATA_TIMEOUT
#define HAL_SD_ERROR_TX_UNDERRUN
#define HAL_SD_ERROR_RX_OVERRUN
#define HAL_SD_ERROR_ADDR_MISALIGNED
#define HAL_SD_ERROR_BLOCK_LEN_ERR
#define HAL_SD_ERROR_ERASE_SEQ_ERR
#define HAL_SD_ERROR_BAD_ERASE_PARAM
#define HAL_SD_ERROR_WRITE_PROT_VIOLATION
#define HAL_SD_ERROR_LOCK_UNLOCK_FAILED
#define HAL_SD_ERROR_COM_CRC_FAILED
#define HAL_SD_ERROR_ILLEGAL_CMD
#define HAL_SD_ERROR_CARD_ECC_FAILED
#define HAL_SD_ERROR_CC_ERR
#define HAL_SD_ERROR_GENERAL_UNKNOWN_ERR
#define HAL_SD_ERROR_STREAM_READ_UNDERRUN
#define HAL_SD_ERROR_STREAM_WRITE_OVERRUN
#define HAL_SD_ERROR_CID_CSD_OVERWRITE
#define HAL_SD_ERROR_WP_ERASE_SKIP
#define HAL_SD_ERROR_CARD_ECC_DISABLED
#define HAL_SD_ERROR_ERASE_RESET
#define HAL_SD_ERROR_AKE_SEQ_ERR
#define HAL_SD_ERROR_INVALID_VOLTRANGE
#define HAL_SD_ERROR_ADDR_OUT_OF_RANGE
#define HAL_SD_ERROR_REQUEST_NOT_APPLICABLE
#define HAL_SD_ERROR_INVALID_PARAM
#define HAL_SD_ERROR_UNSUPPORTED_FEATURE
#define HAL_SD_ERROR_BUSY
#define HAL_SD_ERROR_DMA
#define HAL_SD_ERROR_TIMEOUT
Removed; callbacks are handled differently in HAL2. For more details refer to Individual callback registration APIs replace global register and unregister functions. |
HAL SD context types ¶
|
HAL1 |
HAL2 |
|---|---|
#define SD_CONTEXT_DMA
#define SD_CONTEXT_IT
#define SD_CONTEXT_NONE
#define SD_CONTEXT_READ_MULTIPLE_BLOCK
#define SD_CONTEXT_READ_SINGLE_BLOCK
#define SD_CONTEXT_WRITE_MULTIPLE_BLOCK
#define SD_CONTEXT_WRITE_SINGLE_BLOCK
|
Removed; these constants were used internally in HAL1 and do not impact user-level operations. |